package com.quanyan.user.mapper;

import com.quanyan.comment.response.LableBaseInfo;
import com.quanyan.user.model.db.TbUser;
import com.quanyan.user.model.vo.response.QueryUserInfo;
import com.quanyan.user.model.vo.response.UserIcon;
import com.quanyan.user.model.vo.response.my.FollowDarenIcon;
import com.quanyan.user.response.RespUserInfoDetail;
import com.quanyan.user.utils.CriteriaUtil;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * Created by Administrator on 2016/7/1.
 */
public interface UserInfoMapper {

    /**
     * 批量查询用户
     * @param map
     * @return
     */
    List<TbUser> batchQueryUser(@Param("m") Map<String,Object> map);

    /**
     * 分页查询用户基本信息
     * @param example
     * @return
     */
    List<QueryUserInfo> queryUserInfoByPage(CriteriaUtil example);

    Integer countUserInfoByCriteria(CriteriaUtil example);


    void batchInsert(@Param("list") List<TbUser> list);

    /**
     * 查询用户详细信息 + 身高，体重，等级
     * @return
     */
    RespUserInfoDetail findUserInfoDetail(@Param("uid") Integer uid);


    List<RespUserInfoDetail> batchFindUserInfoDetail(@Param("list") List<Integer> lstUid);

    /**
     * 批量更改larkCode
     * @param lst
     */
    void updateLarkCode(@Param("list") List<TbUser> lst);

    /**
     * 解决微信图像不匹配
     * @param pageNum
     * @param pageSize
     * @param keyWord
     * @return
     */
    List<UserIcon> getIcon(@Param("pageNum") Integer pageNum, @Param("pageSize") Integer pageSize,@Param("keyWord") String keyWord);

    /**
     *  随机产生一批标签
     *
     * @param pageSize
     * @return
     */
    List<LableBaseInfo> randomGenerateLables(Integer pageSize);

    /**
     * 获取用户标签
     *
     * @param uid
     * @return
     */
    List<LableBaseInfo> getUserLalels(Integer uid);

    /**
     * 批量插入用户标签
     *
     * @param labelIds
     * @param uid
     * @return
     */
    int batchIntoUserLabel(@Param("labelIds") List<Integer> labelIds, @Param("uid") Integer uid);

    /**
     * 删除用户标签
     *
     * @param uid
     * @return
     */
    int deleteUserLabel(Integer uid);

    /**
     * 获取用户标签
     * @param uid
     * @return
     */
    List<Integer> getUserLableIds(Integer uid);

    /**
     * 获取达人图像
     *
     * @param uid
     * @return
     */
    List<FollowDarenIcon> getLastFollowDarenIcon(Integer uid);
}
